﻿/*********************************************************************
 ****  描    述： &lt;QinCom 通讯协意 #summary#  #AFNNAME#  #FN# 逻辑的处理方法&gt;
 ****  创 建 者： &lt;周渊&gt;
 ****  创建时间： &lt;#Date#&gt;
 ****  修改标识:  修改人: 
 ****  修改日期:  
 ****  修改内容:   
*********************************************************************/
using System;
using System.Collections.Generic;
using InCom.Entities.UnitEntities;
using InCom.Utilities;
using InCom.Utilities.Protocol;

namespace InCom.Core.Test.UdpUnitLogic
{
         /// &lt;summary&gt;
        ///   #summary#  #FN#数据单元的处理逻辑,处理方法
        /// &lt;/summary&gt;
        public class  #AFNNAME#Logic#FN#Method : IUdpUnitLogic
    {
        private byte _afn = #AFN#;
        /// &lt;summary &gt;
        /// 对应协义的AFN
        /// &lt;/summary &gt;
        public byte AFN
        {
            get { return _afn; }
            set { _afn = value; }
        }
        private ushort _fn =(ushort)InCom.Utilities.Protocol.FN.#FN#;
        /// &lt;summary &gt;
        /// FN,对应数据单元的FN
        /// &lt;/summary &gt;
        public ushort FN
        {
            get { return _fn; }
            set { _fn = value; }
        }



        /// &lt;summary &gt;
        /// 返回当前处理类的版本号,越大越新
        /// &lt;/summary &gt;
        public int Ver
        {
            get { return 0; }
        }
        /// &lt;summary &gt;
        /// 协义解析功能,此属性会在  ProtocolManager 文件初始化时自动实例化
        /// &lt;/summary &gt;
        public IProtocolManager ProtocolManager{get;set; }

        /// &lt;summary &gt;
        /// 协义解析与转换器,此属性会自动实例化
        /// &lt;/summary &gt;
        public IBaseUdpProtocolEntityMethod BaseUdpProtocolEntityMethod { get; set; }

        /// &lt;summary &gt;
        /// 用于传递操作上下文的字典,键为类名如:OnlineTerminalQueue,值为实例
        /// CommandAdapter,
        /// OnlineTerminalQueue,
        /// TerminalMessageRecord ,这些处理队列的数据实体
        ///示例: key="CommandAdapter",value=CommandAdapter.Create()
        /// &lt;/summary &gt;
        public Dictionary&lt;string, object &gt; OperatrionContextDictionary
        {
            get; set;
        }

        /// &lt;summary &gt;
        /// 进行数据协义处理
        /// &lt;/summary &gt;
        /// &lt;param name="entity" &gt;传入整个,消息数据体,这里为什么传入整个数据体而不是单个 数据单元,因为可能这个处理逻辑中会用到其它的数据处理单元中的消息数据&lt;/param &gt;
        ///&lt;param name="terminal" &gt;当前终端数据实体&lt;/param &gt;
        /// &lt;param name="sourceEntity" &gt;等待处理的数据对像&lt;/param &gt;
        ///&lt;returns &gt;如果处理成功则返回 true&lt;/returns &gt;
        public bool Process(BaseUdpProtocolEntity entity, TerminalEntity terminal, Utilities.Pool.WaitUdpProcessEntity sourceEntity)
        {

            IUnitEntity unitentity;
            //获取数据单元
            entity.UnitsDictionary.TryGetValue(FN, out unitentity);
            //数据单元没有找到直接返回 false
            if (unitentity == null)
            {
                return false;
            }
            //强制类型转换
            #AFNNAME#Entity#FN# dataUnit = (#AFNNAME#Entity#FN#)unitentity;

            #region #FN# 的具体处理代码

            #endregion

            throw new NotImplementedException("没有实现方法,无法进行处理数据单元逻辑操作");

            //return true;
        }
    }
}
